package cn.cool.middleware.biz_exception_retry.types.annotation;

import org.springframework.core.annotation.AliasFor;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target({ElementType.METHOD})
@Retention(value = RetentionPolicy.RUNTIME)
public @interface BizWithException {
    /** 是否开启基于异常重试 */
    boolean enable() default true;

    /** 执行异常，includes 的 alias */
    Class<? extends Throwable>[] value() default {};

    /** 包含的异常，如果为空，那么则表示需要拦截所有异常 */
    Class<? extends Throwable>[] includes() default {};

    /** 排除的异常 */
    Class<? extends Throwable>[] excludes() default {};
}
